package com.isd.global.web;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import com.isd.global.modelo.HomeImagenes;
import com.isd.global.modelo.ItemBanner;
import com.isd.global.modelo.ItemBannerPK;
import com.isd.global.modelo.Parametro;
import com.isd.global.rn.ParametrosRN;
import com.isd.global.util.JsfUtil;
import com.isd.pool.modelo.Pool;
import com.isd.pool.rn.PoolRN;
import com.isd.promocion.modelo.Promocion;
import com.isd.promocion.rn.PromocionRN;
import java.io.Serializable;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;

/**
 *
 * @author ctrosch
 */
@ManagedBean
@ViewScoped
public class ParametrosBean implements Serializable {

    @EJB private ParametrosRN parametrosRN;    
    @EJB private PromocionRN promocionRN;
    @EJB private PoolRN poolRN;
    
    private Parametro parametro;
    private ItemBanner itemBanner;

    @EJB private MailFactory mailFactory;

    @ManagedProperty(value = "#{aplicacionBean}")
    private AplicacionBean aplicacionBean;

    /** Creates a new instance of ParametrosBean */
    public ParametrosBean() {

    }
   
    @PostConstruct
    private void init(){
        try {
            parametro = parametrosRN.getParametros();   
            itemBanner = new ItemBanner();
        } catch (Exception ex) {
            Logger.getLogger(ParametrosBean.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public String verParametros(){
        return "../administracion/parametros.xhtml";
    }

    public void guardar(){
        try {
            
            parametrosRN.editar(parametro);            
            aplicacionBean.actualizarDatos();            
            JsfUtil.addInfoMessage("Los parámetros se guardaron correctamente");
        } catch (Exception ex) {

            Logger.getLogger(ParametrosBean.class.getName()).log(Level.SEVERE, "Error al guardar parametros", ex);
        }
    }

    public void borrarImagenHome(HomeImagenes hi){

        if (parametro.getImagenesHome().contains(hi)){
            parametro.getImagenesHome().remove(hi);
            guardar();
            JsfUtil.addWarningMessage("La imágen del home ha sido borrada");
        }
    }

    public void envioMailPruebaHTML(){
        try {
            mailFactory.envioPruebaHTML();
            JsfUtil.addInfoMessage("Se ha enviado un correo electrónico a la casilla confugarada");
        } catch (Exception e) {
            JsfUtil.addErrorMessage(e.getMessage());
        }
    }
    
    public void agregarItemBanner(){
        
        itemBanner.setItemBannerPK(new ItemBannerPK(parametro.getId(), parametro.getItemsBanner().size()+1));
        
        itemBanner.setParametro(parametro);
        itemBanner.setOrden(parametro.getItemsBanner().size()+1);        
        parametro.getItemsBanner().add(itemBanner);
        guardar();
    }
    
    public void eliminarItemBanner(){
        
    }
    
    public List<Promocion> completePromocion(String query){
        
        return promocionRN.getPromocionByNombre(query);        
    }
    
    public List<Pool> completePool(String query){
        
        return poolRN.getPoolByDescripcion(query);
    }

    public Parametro getParametro() {
        return parametro;
    }

    public void setParametro(Parametro parametro) {
        this.parametro = parametro;
    }

    public AplicacionBean getAplicacionBean() {
        return aplicacionBean;
    }

    public void setAplicacionBean(AplicacionBean aplicacionBean) {
        this.aplicacionBean = aplicacionBean;
    }

    public ItemBanner getItemBanner() {
        return itemBanner;
    }

    public void setItemBanner(ItemBanner itemBanner) {
        this.itemBanner = itemBanner;
    }
    
}
